package org.qiyu.live.im.core.server.service;

import org.qiyu.live.im.dto.ImMsgBody;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: sfx
 * Date: 2023-10-19
 * Time: 20:14
 */
public interface MsgAckServiceHandler {

    /**
     * 收到客户端的ack后,就将ack从redis中移除
     *
     * @param msgBody
     */
    void doMsgAck(ImMsgBody msgBody);

    /**
     * IM发送给客户端消息之后,要记录一个ack,等待客户端接收到了消息返回ack,我们im这边再将ack删除掉
     *
     * @param msgBody
     * @param times
     */
    void recordMsgAck(ImMsgBody msgBody, int times);

    /**
     * 获取到重试次数
     *
     * @param msgBody
     */
    int getRetryTimes(ImMsgBody msgBody);

    /**
     * IM把消息发送给客户端之后,还要发送一条延迟消息,以便消息没有到达客户端,进行后续重发操作.
     *
     * @param msgBody
     */
    void sendDelayMessage(ImMsgBody msgBody);
}